Field
The present disclosure relates to GUI object identification. More specifically, the present disclosure relates to identifying GUI objects for non-markup-language-presented applications.
Related Art
As the demand for high-quality software increases, software testing plays an increasingly critical role in the software industry. In order to test graphical user interface (GUI) of a software application, a tester usually has to manually repeat actions on the GUI. This process can be tedious and costly. Ever since the automated GUI testing tool was introduced, time and effort spent on software testing have been greatly reduced. However, one of the key barriers for large-scale deployment of automated GUI testing tools is how to identify GUI objects quickly and correctly, especially for non-markup-language-presented applications, or so-called “native applications.”
A GUI object can be identified by its attributes. An application that is not presented on a display based on a markup language, such as Extensible Markup Language (XML), is called a non-markup-language-presented application. Conventionally, identification of GUI objects for non-markup-language-presented applications involves manually documenting attributes or properties of each GUI object. The attributes of each GUI object is then stored in an object repository. During the GUI-object identification process, a target GUI object can be identified by comparing the attributes of the target object with the attributes stored in the object repository.
However, these conventional GUI-object identification methods have several limitations. First, because no standard has been established for building the object repository, different implementations follow different rules to generate the object repository. The internal organization of different object repositories can be complex and implementation-dependent. Searching or addressing objects in the object repository can be difficult due to the lack of standard internal organization. Since a GUI object can only be identified by comparing its attributes, it is difficult to implement complex object-addressing functions such as addressing by the object hierarchy. In addition, the indispensable object repository increases the complexity of tool migration and maintenance. For example, with any GUI object change in the software application, the object repository often needs to be updated accordingly. When a tester applies an object identification result to another application, he or she typically has to first adapt all the related object repository files to the new application. As the number and size of repository files increase, the maintenance cost increases, and the maintenance itself becomes more difficult.